"""
ConnLLM V2 接口定义
定义提供商和处理器接口
"""

from typing import Dict, Any, List, Optional, Generator, Union
from abc import ABC, abstractmethod

class IProvider(ABC):
	"""提供商接口定义"""
	
	@abstractmethod
	def complete(self, messages: List[Dict[str, Any]], stream: bool = False) -> Union[Dict[str, Any], Generator[str, None, None]]:
		"""
		执行LLM完成请求
		
		Args:
			messages: 消息列表
			stream: 是否使用流式输出
			
		Returns:
			非流式模式返回完整响应，流式模式返回文本生成器
		"""
		pass
	
	@abstractmethod
	def complete_stream(self, messages: List[Dict[str, Any]]) -> Generator[str, None, None]:
		"""
		执行LLM流式完成请求
		
		Args:
			messages: 消息列表
			
		Returns:
			文本生成器
		"""
		pass
